home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / mosmllib / test / generalmac.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  1.1 KB  |  33 lines  |  [TEXT/R*ch]

  1. (* General -- incomplete 1996-04-19, 1996-09-30, 1997-03-12 *)
  2.  
  3. use "auxil.sml";
  4.  
  5. exception NoExceptionRaised
  6.  
  7. fun getExn (f : unit -> 'a) = 
  8.     (f (); NoExceptionRaised) handle e => e
  9.  
  10. fun prExn(exnStr, exn) =
  11.     (print "\nShould be `"; print exnStr; print "':\n  ";
  12.      print (exnName exn); print "\n  ";
  13.      print (exnMessage exn));
  14.  
  15. exception E1;
  16. exception E2 = E1;
  17.  
  18. val _ = List.map prExn
  19.     [("E1 or E2",  E2),
  20.      ("Bind",      getExn(fn _ => let val true = false in () end)),
  21.      ("Match",     getExn(fn _ => (fn true => ()) false)),
  22.      ("Subscript", getExn(fn _ => Vector.sub(vector [], ~1))),
  23.      ("Size",      getExn(fn _ => Array.array(Array.maxLen+1, ()))),
  24. (*   ("Overflow",  getExn(fn _ => Math.exp 1E99)),
  25.      ("Domain",    getExn(fn _ => Math.ln ~1.0)),
  26. *)   ("Div",       getExn(fn _ => 1 div 0)),
  27.      ("Chr",       getExn(fn _ => Char.chr 9999999)),
  28.      ("Fail",      Fail "demo"),
  29.      ("Option",    getExn(fn _ => valOf NONE)),
  30.      ("Empty",     getExn(fn _ => List.hd [])),
  31.      ("SysErr",    getExn (fn _ => FileSys.modTime "exists.not")),
  32.      ("Io",        getExn (fn _ => TextIO.openOut ":"))];
  33.